<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // function show(){
        //     console.log(arguments);//形参的集合
        //     console.log(arguments.callee);//当前函数本身
        //     console.log(arguments.callee.caller);//函数调用的位置  全局--null
        // }
        

        // function fn(){
        //     show()
        // }
        // fn()

        //堆： 浏览器：谷歌浏览器是标记方式，ie和火狐等浏览器是采用计数方法
        // 开发人员，释放堆内存，就是设置值为null

        //栈：函数执行上下文-----函数执行完后，会立即释放
        //    全局执行上下文----只有当页面关闭才会释放

        //不被销毁的函数执行上下文：当前作用域中如果有一个引用数据类型的值被外面的变量占用就不销毁----闭包

        //经典闭包:
        // 函数套函数
        // 里面的函数可以使用外面函数的变量
        // 外面的函数可以将里面的函数返回出去
        // function fn(){
        //     var num=2;
        //     return function(){
        //        console.log(num);
        //     };
        // };
        // var f=fn();
        // f=null;//释放闭包

        //函数执行上下文，不立即销毁,（当函数执行完毕之后销毁）
        // function fn(x){
        //     return function(y){
        //         return x+y;
        //     }
        // }
        // fn(1)(2);
        //fn(1)--->
        // function(y){
        //         return x+y;
        //}

        

    </script>
</body>
</html>